package vista;

import gpschallenge.componentes.utililidades.XML;
import gpschallenge.juego.Juego;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

import controlador.Coordinador;

public class VentanaMenu extends JFrame implements ActionListener {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JLabel labelNombre;
	private JButton botonComenzarPartida, botonRetomarPartida, botonPuntajes,
			botonSalir;
	private Coordinador miCoordinador;

	public VentanaMenu(Coordinador unCoordinador) {
		miCoordinador = unCoordinador;
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		labelNombre = new JLabel();
		labelNombre.setBounds(20, 20, 100, 20);
		labelNombre.setText("Hola " + miCoordinador.getMiJugador().getNombre());
		add(labelNombre);

		botonComenzarPartida = new JButton();
		botonComenzarPartida.setBounds(160, 40, 180, 40);
		botonComenzarPartida.setText("Comenzar Partida");

		botonRetomarPartida = new JButton();
		botonRetomarPartida.setBounds(160, 130, 180, 40);
		botonRetomarPartida.setText("Retomar Partida Guardada");

		botonPuntajes = new JButton();
		botonPuntajes.setBounds(160, 220, 180, 40);
		botonPuntajes.setText("Puntajes");

		botonSalir = new JButton();
		botonSalir.setBounds(380, 280, 90, 30);
		botonSalir.setText("Salir");

		botonComenzarPartida.addActionListener(this);
		botonRetomarPartida.addActionListener(this);
		botonPuntajes.addActionListener(this);
		botonSalir.addActionListener(this);
		add(botonComenzarPartida);
		add(botonRetomarPartida);
		add(botonPuntajes);
		add(botonSalir);
		
		File archivoJuego = new File("Jugada_"+miCoordinador.getMiJugador().getNombre()+".xml");
		if (!archivoJuego.exists()){
			botonRetomarPartida.setEnabled(false);
		}

		setSize(480, 350);
		setTitle("GPS-Challenge");
		setLocationRelativeTo(null);
		setResizable(false);
		setLayout(null);
	}

	public void setCoordinador(Coordinador unCoordinador) {
		miCoordinador = unCoordinador;
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == botonComenzarPartida) {
			this.dispose();
			miCoordinador.setMiVentanaNuevaPartida(new VentanaNuevaPartida(miCoordinador));
			miCoordinador.mostrarVentanaNuevaPartida();
		}

		if (e.getSource() == botonRetomarPartida) {
			String nombreJugador = miCoordinador.getMiJugador().getNombre();
			File archivoGuardado = new File("Jugada_" + nombreJugador + ".xml");
			if (archivoGuardado.exists()) {
				this.dispose();
				Juego juegoGuardado = (Juego) XML.obtenerObjeto("Jugada_"+ nombreJugador + ".xml");
				miCoordinador.setMiJuego(juegoGuardado);
				miCoordinador.setMiVentanaJuego(new VentanaJuego(miCoordinador));
				miCoordinador.mostrarVentanaJuego();
			} else {
				javax.swing.JOptionPane.showMessageDialog(null,"ERROR: Usted no tiene partidas guardadas","ArchivoInvalidoException",javax.swing.JOptionPane.ERROR_MESSAGE);
			}
		}

		if (e.getSource() == botonPuntajes) {
			this.dispose();
			try {
				miCoordinador.setMiVentanaPuntajes(new VentanaPuntajes(miCoordinador));
			} catch (ClassNotFoundException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			miCoordinador.mostrarVentanaPuntajes();
		}

		if (e.getSource() == botonSalir) {
			System.exit(0);
		}
	}
}